<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <button id="btn">btn</button>
    <script>
      btn.onclick = function () {
        // 1. 创建xhr实例
        const xhr = new XMLHttpRequest()
        // 2. 设置请求行
        // 注意: 不管是什么请求方式,url地址也可以写相对路径.相对的还是当前html页面的url地址
        xhr.open('post', '/xxx')

        // 3. 设置请求头
        // 注意: get请求不需要设置请求头.但是post请求必须设置
        // 为什么呢? 因为post请求有请求主体,我们需要描述请求主体中数据的格式.如果不描述,则即便给服务器传递了数据,服务器也接收不到
        xhr.setRequestHeader(
          'content-type', //content-type描述了请求主体中数据的格式
          'application/x-www-form-urlencoded' // 这个字符串就是请求主体中默认格式 ==> '键=值' ==> url编码
        )

        // 4. 设置请求主体并发送请求
        xhr.send('xxx=1&yyy=2')

        // 5. 接收响应
        xhr.onreadystatechange = function () {
          if (xhr.readyState === 4) {
            // 请求响应完成
            if (xhr.status === 200) {
              //表示成功
              alert('请求响应成功')
              // 注意: xhr.responseText返回的数据类型一定是字符串
              console.log(JSON.parse(xhr.responseText)) //获取响应主体的数据
            } else {
              // 失败
              alert('失败')
            }
          }
        }
      }
    </script>
  </body>
</html>
